package tsVRPTW;

import java.util.ArrayList;

public class Parameter {

	public static double INF = Double.MAX_VALUE; // 设置一个最大值，以后拿来用
	public static int CustomerNumber = 100; // 算例中除仓库以外的所有客户节点的数量
	public static int VehicleNumber = 100; // 配送车辆的数目
	public static int Capacity = 200; // 车辆的最大载量
	public static int IterMax = 2000; // 最大的迭代次数

//	以下是禁忌表的参数
	public static int TabuTenure = 20; // 禁忌表的禁忌步长
//	创建二维禁忌表，禁忌将结点i插入到路径k的操作（这里加10，是为了保证禁忌表可以存储所有可能的禁忌情况）
	public static int[][] Tabu = new int[CustomerNumber + 10][VehicleNumber + 10];
//	创建一维禁忌表。禁忌使用车辆j的操作
	public static int[] TabuCreate = new int[VehicleNumber+10];

	public static double Ans; // 最优解的距离
//	在目标函数中，Alpha是路径的总违反量系数，Beta是时间窗总违反量系数。Sita是控制系数，改变Alpha和Beat
	public static double Alpha = 1, Beta = 1, Sita = 0.5;

//	记录图，两点之间的路径
	public static double[][] Graph = new double[CustomerNumber + 10][CustomerNumber + 10];
//	客户数组，存储所有的客户信息
	public static CustomerType[] customers = new CustomerType[CustomerNumber + 10];
//	存储当前解的路线数据
	public static RouteType[] routes = new RouteType[VehicleNumber + 10];
//	存储最优解的路线数据
	public static RouteType[] route_Ans = new RouteType[VehicleNumber + 10];
	
//	存储每次迭代产生的解的路径长度
	public static ArrayList<Double> solution = new ArrayList<>();
}
